package com.teira.rhrrealstate.session;

import com.teira.rhrrealstate.entity.*;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.framework.EntityHome;

@Name("inmuebleHome")
public class InmuebleHome extends EntityHome<Inmueble> {

	@In(create = true)
	AmbientesHome ambientesHome;
	@In(create = true)
	AntiguedadHome antiguedadHome;
	@In(create = true)
	BarrioPartidoLocalidadHome barrioPartidoLocalidadHome;
	@In(create = true)
	ClienteHome clienteHome;
	@In(create = true)
	MonedaHome monedaHome;
	@In(create = true)
	PropiedadHome propiedadHome;
	@In(create = true)
	TipoOperacionHome tipoOperacionHome;
	@In(create = true)
	ZonaGeograficaHome zonaGeograficaHome;
	@In(create = true)
	ImagenHome imagenHome;
	@In(create=true) 
	Imagen imagen;	

	@Override
	public String persist() {
		String msg = super.persist();
		if (imagen.getData() == null)
			return msg;
		imagen.setInmueble(instance);
		imagenHome.setInstance(imagen);
		imagenHome.persist();
/*		ImagenesInmueble imagenesInmueble = (ImagenesInmueble) Component.getInstance(ImagenesInmueble.class);
		imagenesInmuebleHome.setInstance(imagenesInmueble);
		imagenesInmuebleHome.getInstance().setImagen(imagen);
		imagenesInmuebleHome.getInstance().setInmueble(instance);
		imagenesInmuebleHome.persist();
*/		
		return msg;
	}

	
	public void setInmuebleId(Long id) {
		setId(id);
	}

	public Long getInmuebleId() {
		return (Long) getId();
	}

	@Override
	protected Inmueble createInstance() {
		Inmueble inmueble = new Inmueble();
		return inmueble;
	}

	public void load() {
		if (isIdDefined()) {
			wire();
		}
	}

	public void wire() {
		getInstance();
		Ambientes ambientes = ambientesHome.getDefinedInstance();
		if (ambientes != null) {
			getInstance().setAmbientes(ambientes);
		}
		Antiguedad antiguedad = antiguedadHome.getDefinedInstance();
		if (antiguedad != null) {
			getInstance().setAntiguedad(antiguedad);
		}
		BarrioPartidoLocalidad barrioPartidoLocalidad = barrioPartidoLocalidadHome
				.getDefinedInstance();
		if (barrioPartidoLocalidad != null) {
			getInstance().setBarrioPartidoLocalidad(barrioPartidoLocalidad);
		}
		Cliente cliente = clienteHome.getDefinedInstance();
		if (cliente != null) {
			getInstance().setCliente(cliente);
		}
		Moneda mondeda = monedaHome.getDefinedInstance();
		if (mondeda != null) {
			getInstance().setMondeda(mondeda);
		}
		Propiedad propiedad = propiedadHome.getDefinedInstance();
		if (propiedad != null) {
			getInstance().setPropiedad(propiedad);
		}
		TipoOperacion tipoOperacion = tipoOperacionHome.getDefinedInstance();
		if (tipoOperacion != null) {
			getInstance().setTipoOperacion(tipoOperacion);
		}
		ZonaGeografica zonaGeografica = zonaGeograficaHome.getDefinedInstance();
		if (zonaGeografica != null) {
			getInstance().setZonaGeografica(zonaGeografica);
		}
	}

	public boolean isWired() {
		if (getInstance().getAmbientes() == null)
			return false;
		if (getInstance().getAntiguedad() == null)
			return false;
		if (getInstance().getCliente() == null)
			return false;
		if (getInstance().getMondeda() == null)
			return false;
		if (getInstance().getPropiedad() == null)
			return false;
		if (getInstance().getTipoOperacion() == null)
			return false;
		if (getInstance().getZonaGeografica() == null)
			return false;
		return true;
	}

	public Inmueble getDefinedInstance() {
		return isIdDefined() ? getInstance() : null;
	}

	public Imagen getImagen() {
		return imagen;
	}

	public void setImagen(Imagen imagen) {
		this.imagen = imagen;
	}

}
